//
//  HttpRequestManager.h
//  OneToOne
//
//  Created by Herui on 9/5/14.
//  Copyright (c) 2014 jiayuan. All rights reserved.
//

#import <Foundation/Foundation.h>
// add by herui: 2014.9.5
// 采用AFNetworking 封装网络行为
@interface HttpRequestManager : NSObject


/**
 *  管理网络请求类的单例
 *
 *  @return 网络请求类的单例
 */
+ (HttpRequestManager *)defaultManager;


/**
 *  get请求
 *
 *  @param urlString 请求接口
 *  @param success   成功的回调
 *  @param failure   失败的回调
 */
+ (void)getWithUrlString:(NSString *)urlString
                  success:(void (^)(id response))success
                  failure:(void (^)(NSError *error))failure;
/**
 *  get请求, 增加缓存开关控制
 *
 *  @param urlString 请求接口
 *  @param success   成功的回调
 *  @param failure   失败的回调
 *  @param yesOrNo   是否缓存接口数据
 */
+ (void)getWithUrlString:(NSString *)urlString
                 success:(void (^)(id response))success
                 failure:(void (^)(NSError *error))failure
                   cache:(BOOL)yesOrNo;

/**
 *  get请求, 增加当前是否登录过开关控制
 *  未登录不传uid, token
 *
 *  @param urlString 请求接口
 *  @param success   成功的回调
 *  @param failure   失败的回调
 *  @param yesOrNo   是否已经登录过
 */
+ (void)getWithUrlString:(NSString *)urlString
                 success:(void (^)(id response))success
                 failure:(void (^)(NSError *error))failure
                 isLogin:(BOOL)yesOrNo;

/**
 *  post请求
 *
 *  @param urlString  请求接口
 *  @param parameters 业务接口参数字典
 *  @param success    成功的回调
 *  @param failure    失败的回调
 */
+ (void)postWithUrlString:(NSString *)urlString
               parameters:(id)parameters
                  success:(void (^)(id response))success
                  failure:(void (^)(NSError *error))failure;

/**
 *  post请求, 增加是否缓存开关控制
 *
 *  @param urlString  请求接口
 *  @param parameters 业务接口参数字典
 *  @param success    成功的回调
 *  @param failure    失败的回调
 *  @param yesOrNo    是否缓存
 */
+ (void)postWithUrlString:(NSString *)urlString
               parameters:(id)parameters
                  success:(void (^)(id response))success
                  failure:(void (^)(NSError *error))failure
                    cache:(BOOL)yesOrNo;

/**
 *  post请求, 增加当前是否登录过开关控制
 *  为登录不加入uid, token...
 *
 *  @param urlString  请求接口
 *  @param parameters 业务接口参数字典
 *  @param success    成功的回调
 *  @param failure    失败的回调
 *  @param yesOrNo    是否缓存
 */
+ (void)postWithUrlString:(NSString *)urlString
               parameters:(id)parameters
                  success:(void (^)(id response))success
                  failure:(void (^)(NSError *error))failure
                  isLogin:(BOOL)yesOrNo;

/**
 *  生成上传文件的request, 如果使用NSURLSession上传请使用该方法
 *
 *  @param urlString  请求接口
 *  @param parameters 业务接口参数字典
 *  @param fileData   上传文件的Data
 *  @param name       上传文件对应的字典参数, 使用该参数在后台得到上传文件_Files["name"];
 *  @param fileName   上传文件的文件名
 *  @param mimeType   e.g. @"image/png"
 *
 */
+ (NSMutableURLRequest *)uploadRequestWithUrlString:(NSString *)urlString
                                         parameters:(id)parameters
                                           fileData:(id)fileData
                                               name:(NSString *)name
                                           fileName:(NSString *)fileName
                                           mimeType:(NSString *)mimeType;

/**
 *  HTTPRequestOperation发起上传请求
 *
 *  @param urlString  请求接口
 *  @param parameters 业务接口参数字典
 *  @param fileData   上传文件的Data
 *  @param name       上传文件对应的字典参数, 使用该参数在后台得到上传文件_Files["name"];
 *  @param fileName   上传文件的文件名
 *  @param mimeType   e.g. @"image/png"
 *  @param success    成功回调
 *  @param failure    失败回调
 */
+ (void)uploadFileWithUrlString:(NSString *)urlString
                                         parameters:(id)parameters
                                           fileData:(id)fileData
                                               name:(NSString *)name
                                           fileName:(NSString *)fileName
                                           mimeType:(NSString *)mimeType
                                            success:(void (^)(id response))success
                                            failure:(void (^)(NSError *error))failure;






@end
